package Base;


public abstract class Armas {
	
	/*
	 * Autor:Bruno da Silva
	 * Data: 10/04/2011
	 * Classe base para todas as armas do jogo
	 * 
	 */
	
	String nome;
	int level;	
	float modificarDePreco;
	float modificarDePrecoBase;
	float precoMimino;
	float precoMaximo;
	float danoMimino;
	float danoMaximo;
	float danoMedio;
	float peso;
	float preRequisitoForca;
	float preRequisitoAgilidade;
	

	
	public void setLevelObjetivo(int levelPesquisa) {
		setLevel(levelPesquisa);
		setaStatusArma();		
		calculaDanoMedio();
		definePreco();
		definePreRequisito();
		//mostraResultados();
	}
	public void setLevel(int nivel) {
		// TODO Auto-generated method stub
		this.level = nivel;
	}

	public float getModificarDePreco() {
		return modificarDePreco;
	}
	
	
	public void setModificarDePreco(float modificarDePreco) {
		this.modificarDePreco = modificarDePreco;
	}
	
	public float getModificarDePrecoBase() {
		return modificarDePrecoBase;
	}
	
	public void setModificarDePrecoBase(float modificarDePrecoInicial) {
		this.modificarDePrecoBase = modificarDePrecoInicial;
	}
	
	public float getPrecoMimino() {
		return precoMimino;
	}
	
	public void setPrecoMimino(float precoMimino) {
		this.precoMimino = precoMimino;
	}
	
	public float getPrecoMaximo() {
		return precoMaximo;
	}
	
	public void setPrecoMaximo(float precoMaximo) {
		this.precoMaximo = precoMaximo;
	}
	
	public float getDanoMimino() {
		return danoMimino;
	}
	
	public void setDanoMimino(float danoMimino) {
		this.danoMimino = danoMimino;
	}
	
	public float getDanoMaximo() {
		return danoMaximo;
	}
	
	public void setDanoMaximo(float danoMaximo) {
		this.danoMaximo = danoMaximo;
	}
	
	public float getDanoMedio() {
		return danoMedio;
	}

	public void setDanoMedio(float danoMedio) {
		this.danoMedio = danoMedio;
	}
	
	public float getPeso() {
		return peso;
	}
	
	public void setPeso(float peso) {
		this.peso = peso;
	}
	
	public float getPreRequisitoForca() {
		return preRequisitoForca;
	}
	
	public void setPreRequisitoForca(float preRequisitoForca) {
		this.preRequisitoForca = preRequisitoForca;
	}
	
	public float getPreRequisitoAgilidade() {
		return preRequisitoAgilidade;
	}
	
	public void setPreRequisitoAgilidade(float preRequisitoAgilidade) {
		this.preRequisitoAgilidade = preRequisitoAgilidade;
	}
	
	public void calculaDanoMedio(){
		this.setDanoMedio((getDanoMaximo()+getDanoMimino())/2);
	}
	
	public void setaStatusArma(){
		
		for(int i=0; i<=getLevel(); i++){
			danoMaximo+= (0.3 * i);
			danoMimino+= (0.3 * i);
		}
		//System.out.println("danoMaximoAtual "+getDanoMaximoAtual()+" danoMiminoAtual "+getDanoMiminoAtual());
	}
	
	
	public void definePreRequisito(){
		setPreRequisitoForca(getPeso()/5);
		setPreRequisitoAgilidade(getDanoMedio()/2);
	}
		
	public void definePreco(){
		setModificarDePreco(getModificarDePrecoBase()+(30*getLevel()*getLevel()));
		setPrecoMimino(getModificarDePreco()*getDanoMedio());
		setPrecoMaximo(getPrecoMimino()*2);
	}
	
	public int getLevel() {
		// TODO Auto-generated method stub
		return this.level;
	}
	public void mostraResultados(){
		System.out.println("Nome "+getNome());
		System.out.println("Preco minimo "+getPrecoMimino());
		System.out.println("Preco maximo "+getPrecoMaximo());
		System.out.println("Dano minimo "+getDanoMimino());
		System.out.println("Dano maximo "+getDanoMaximo());
		System.out.println("Dano medio "+getDanoMedio());
		System.out.println("Pre requisito forca "+getPreRequisitoForca());
		System.out.println("Pre requisito agilidade "+getPreRequisitoAgilidade());
		System.out.println("Modificador de preco Atual "+getModificarDePreco());
		System.out.println();
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	
}
